package cn.net.csit.platform_cloud.basicmodel.controller;

import cn.net.csit.platform_cloud.basicmodel.service.IBasicObjectPropertyRelationService;
import cn.net.csit.platform_cloud.basicmodel.service.IBasicPropertyDictionaryService;
import cn.net.csit.platform_cloud.utils.BaseResult;
import cn.net.csit.platform_cloud.utils.ResultUtil;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @ClassName:
 * @Author:yanwenjuan
 * @Date:2019/4/814:03
 * @Description:
 */
@RestController
@RequestMapping(value = "/objPropRelation")
public class BasicObjPropertyRelationController {
    @Autowired
    IBasicObjectPropertyRelationService basicObjectPropertyRelationService;
    @Autowired
    IBasicPropertyDictionaryService basicPropertyDictionaryService;
    //0.所有对象列表展示--分页，有条件（对象名称,父对象名称）
    @PostMapping("/getAllByPage")
    public BaseResult getAllByPage(Pageable pageable,String obj_name,String par_obj_name){
        PageHelper.startPage(pageable.getPageNumber(),pageable.getPageSize());
        Map<String,String> map=new HashMap<>();

        map.put("obj_name",obj_name);
        map.put("par_obj_name",par_obj_name);
        //
        //
        //根据条件查询后台数据库，获取所有数据
        List<Map<String,String>> list=basicObjectPropertyRelationService.getAll(map);
        //将查询的数据进行分页
        PageInfo<Map<String,String>> info=new PageInfo<>(list);
        //将分页的数据返回到页面显示
        return ResultUtil.success(info);
    }
    //1.所有属性列表展示--不分页，有条件（根据属性名称，属性组名称查询（包含关系），查询属性列表集合）
    @PostMapping("/getAllProp")
    public  BaseResult getAllProp(String propName, String propGroupName){
        Map<String,String> map=new HashMap<>();
        map.put("propName",propName);
        map.put("propGroupName",propGroupName);
        //根据条件查询后台数据库，获取所有数据--分组展示
        List<Map<String,Object>> list=basicPropertyDictionaryService.getAllByGroup(map);
        //根据条件查询后台数据库，获取所有数据--不分组展示
        //List<BasicPropertyDictionaryDomain> list= basicObjectPropertyRelationService.getAllProp(map);
        //将数据返回到页面显示
        //PageInfo<BasicPropertyDictionaryDomain> info=new PageInfo<>(list);
        return  ResultUtil.success(list);
    }

    //2.根据对象uuid查询属性列表配置情况
    @PostMapping("/getAllPropByUuid")
    public   BaseResult getAllPropByUuid(String uuid){
        Map<String,String> map=new HashMap<>();
        map.put("uuid",uuid);
        //根据条件查询后台数据库，获取所有数据
        Map<String,String> map1=basicObjectPropertyRelationService.getAllPropByUuid(map);
        //将数据返回到页面显示
        return  ResultUtil.success(map1);
    }
    //3.根据对象uuid修改属性列表配置情况（增加，或减少关系）
    @GetMapping("/modifyAllPropByUuid")
    public   BaseResult modifyAllPropByUuid(String uuid,String prop_uuids) throws UnsupportedEncodingException {
        Map<String,String> map=new HashMap<>();
        map.put("uuid",uuid);
        map.put("prop_uuids",prop_uuids);
        //根据条件查询后台数据库，获取所有数据
        Map<String,String> map1=basicObjectPropertyRelationService.updateAllPropByUuid(map);
        //将数据返回到页面显示
        return  ResultUtil.success(map1);
    }
    //3.根据对象uuid修改属性列表配置情况（增加，或减少关系）
    @PostMapping("/updateAllPropByUuid")
    public   BaseResult updateAllPropByUuid(String uuid,String prop_uuids)  {
        Map<String,String> map=new HashMap<>();
        map.put("uuid",uuid);
        map.put("prop_uuids",prop_uuids);
        //根据条件查询后台数据库，获取所有数据
        Map<String,String> map1=basicObjectPropertyRelationService.updateAllPropByUuid(map);
        //将数据返回到页面显示
        return  ResultUtil.success(map1);
    }
}
